{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a271a9d0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 256)\n",
      "(1, 201)\n",
      "(256, 201)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('NLS.mat')\n",
    "\n",
    "# Following is the code to plot the data u vs x and t. u is 256*100\n",
    "# matrix. Use first 75 columns for training and 25 for testing :)\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['tt']\n",
    "u = mat_data['uu']\n",
    "\n",
    "# Use the loaded variables as needed\n",
    "print(x.shape)\n",
    "print(t.shape)\n",
    "print(u.shape)\n",
    "\n",
    "# X, T = np.meshgrid(x, t)\n",
    "# # Define custom color levels\n",
    "# c_levels = np.linspace(np.min(u), np.max(u), 100)\n",
    "\n",
    "# # Plot the contour\n",
    "# plt.figure()\n",
    "# plt.figure(figsize=(15, 5))\n",
    "# plt.contourf(T, X, u.T, levels=c_levels, cmap='coolwarm')\n",
    "# plt.xlabel('t')\n",
    "# plt.ylabel('x')\n",
    "# plt.title('Schrondinger-Equation')\n",
    "# plt.colorbar()  # Add a colorbar for the contour levels\n",
    "# plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1899ebca",
   "metadata": {},
   "outputs": [],
   "source": [
    "h = np.abs(u)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "44f569ad",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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8j3M3hNMQhx5zZv6be7+2kVvhoiIiIissLf9w0+d28Psfp075oYn+kOf/qHayz31fltL8f7aGtzwQhERERERkVWi0CUiIiIiItKjQV3TJSIiInsm24WT8y6F0ZaaGU30+XvX70T64k6tiTHWjb55DUX36Vruk6GIiEifdJ4cHv1ORBZDwwtFRERERER6pJ4uERERERFpxR3G451Fb8ZgqadLRERERESkRwpdIiIiIiIiPdLwQhGRBZtMJoveBBERkVbcXcMLSyh0NeTuaiiJiIiIiEglhS4REREREWlN9+kqpmu6REREREREeqTQJSIiIiIi0iMNLxQRERERkVZ0n65y6ukSERERERHpkXq6RGTlTba3F70JIiIissYUuppyV0NORERERITkdkoaXlhEwwtFRERERER6pNAlIiIiIiLSIw0vFBERERGRdhzG2xpeWEQ9XSIiIiIiIj1ST5eIiIiIiLTi7oy3J4vejMFST5eIiIiIiEiPFLpERERERER6pOGFIrK0xofGi94EkV5t7ttc6H6+uU/NBBEJ48CO7tNVSEfThty98ESYPUmFlqtbtkjXJ+h1O+mqIS8iQ7Ho49Gi1y/D1EW7INm3uqyrrfS2dNEeE0nTntOD0C9/nYPEIk98OumKiIhIost2wZDaGCHbMqTtleWi0CUiIiIiIu1o9sJSmkhDRERERESkRwpdIiIiIiIiPdLwQhERERERacUdJpq9sJB6ukRERERERHqkni4REREREWnF3Zlsa3bHIurpEhERERER6ZFCl4iIiIiISI80vFBERERERNrRfbpKqadLRERERESkRwpdIiIiIiIiPdLwQhERERERacWByUTDC4sodEkndvQlkwXaGI0WvQkiIiIihRS6mvL+g0ZRQ1IBR2SavhPVFExFREQWR6FrwNSQFJGurPPxRIFTRKR/0c2R1/dcU0WhS0REVtrQAmdICOx6mxU8RUQWS6FLRERkjhYRAvtcpwKdiADgMBkP649cQ6LQJSIiIo0NrSdxERQ8RaSKQpeIiIhIC0MNngqDIsOh0CUiIiKygroKg3XD21BDaCiF1WaiiTTGi96MwVLoEhEREZFCyx6i6tI1kNIHhS4RERERkTkICXQKZqtJoUtEREREZCCWtWfR3Zks6bbPw8aiN0BERERERGSVKXSJiIiIiIj0SMMLRURERESkHXcm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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = h.T\n",
    "\n",
    "# Define custom color levels\n",
    "X, T = np.meshgrid(x, t)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure(figsize=(15, 5))\n",
    "CS1 = plt.contourf(T, X, concatenated_array, levels=c_levels, cmap='coolwarm')\n",
    "\n",
    "# Create a custom font with Times New Roman\n",
    "plt.rcParams['figure.figsize'] = [10, 4]\n",
    "\n",
    "from matplotlib.font_manager import FontProperties\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "font_path = 'times-new-roman.ttf'\n",
    "custom_font = FontProperties(fname=font_path)\n",
    "\n",
    "cbar1 = plt.colorbar(CS1)\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_fontproperties(custom_font)\n",
    "    t.set_fontsize(20)\n",
    "\n",
    "plt.xlabel('$t$', fontsize=20, fontproperties=custom_font)\n",
    "plt.ylabel('$x$', fontsize=20, fontproperties=custom_font)\n",
    "plt.title('$|u(x, t)|$', fontsize=20, fontproperties=custom_font)\n",
    "plt.xticks(fontsize=20, fontproperties=custom_font)\n",
    "plt.yticks(fontsize=20, fontproperties=custom_font)\n",
    "\n",
    "# Add a dotted line at t = 0.8\n",
    "#plt.axvline(x=0.8, color='black', linestyle='dotted')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "cbar1.locator = FixedLocator(c_ticks)\n",
    "\n",
    "plt.savefig('True_Sch.pdf', dpi=300)\n",
    "plt.savefig('True_sch.png', dpi=300)\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1bb8ea2e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "pytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
